﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Pencas.Models;
using System.Data;
using System.Web.Script.Serialization;

namespace Pencas.Controllers
{
    public class PartidosController : Controller
    {
        public ActionResult ObtenerPronosticos()
        {
            if (Session["userId"] != null)
            {
                DAOPronostico pronosticoDAO = new DAOPronostico();
                DataSet tablasPartidos = pronosticoDAO.ObtenerPronosticos((string)Session["userId"], true);
                DataSet tablasPartidosSegundaFase = pronosticoDAO.ObtenerPronosticosSegundaFase((string)Session["userId"]);
                DataTable tablaPronosticosEspeciales = pronosticoDAO.ObtenerPronosticosEspeciales((string)Session["userId"]);
                ViewBag.TablasPartidos = tablasPartidos;
                ViewBag.TablasPartidosSegundaFase = tablasPartidosSegundaFase;
                ViewBag.TablaPronosticosEspeciales = tablaPronosticosEspeciales;
                
                return View("Index");
            }
            else
            {
                Session.Add("tmpError", "Ingresa al sitio con tu clave para hacer tu pronóstico");
                return RedirectToAction("Index", "Home");
            }

        }

        [HttpPost]
        public ActionResult GuardarPronostico(string partidos, string campeon, string segundo, string tercero, string masGoles, string totalGoles)
        {
            DAOPronostico pronosticoDAO = new DAOPronostico();
            DataTable dt = new DataTable();
            dt.Columns.Add("IdPartido");
            dt.Columns.Add("GolesLocal");
            dt.Columns.Add("GolesVisitante");
            dt.Columns.Add("EquipoLocal");
            dt.Columns.Add("EquipoVisitante");

            JavaScriptSerializer ser = new JavaScriptSerializer();
            Dictionary<string, object> pronosticos = ser.Deserialize<dynamic>(partidos);

            foreach (var match in pronosticos)
            {
                int idPartido = int.Parse(match.Key);
                string[] resultadoEquipos = ((string)match.Value).Split(';');
                string resultado = resultadoEquipos[0];
                string[] splitResultado = (resultado).Split('-');
                int golesA = int.Parse(splitResultado[0]);
                int golesB = int.Parse(splitResultado[1]);

                DataRow pronosticoRow = dt.NewRow();
                pronosticoRow["IdPartido"] = idPartido;
                pronosticoRow["GolesLocal"] = golesA;
                pronosticoRow["GolesVisitante"] = golesB;
                pronosticoRow["EquipoLocal"] = null;
                pronosticoRow["EquipoVisitante"] = null;

                if (idPartido > 18)
                {
                    string equipos = resultadoEquipos[1];
                    string[] splitEquipos = (equipos).Split('-');
                    int equipoA = int.Parse(splitEquipos[0]);
                    int equipoB = int.Parse(splitEquipos[1]);
                    pronosticoRow["EquipoLocal"] = equipoA;
                    pronosticoRow["EquipoVisitante"] = equipoB;
                }

                dt.Rows.Add(pronosticoRow);
            }
            JsonResult json = new JsonResult();
            json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;

            json.Data = pronosticoDAO.GuardarPronostico(dt, (string)Session["userId"], (string)Session["token"]);
            pronosticoDAO.GuardarPronosticosEspeciales((string)Session["userId"], (string)Session["token"], campeon, segundo, tercero, masGoles, totalGoles);
            
            return json;
        }

        public PartialViewResult ObtenerPronostico(string userId)
        {
            DAOPronostico pronosticoDAO = new DAOPronostico();
            DataSet tablasPartidos = pronosticoDAO.ObtenerPronosticos(userId, true/*false*/);
            DataSet tablasPartidosSegundaFase = pronosticoDAO.ObtenerPronosticosSegundaFase(userId);
            DataTable tablaPronosticosEspeciales = pronosticoDAO.ObtenerPronosticosEspeciales(userId);
            ViewBag.TablasPartidos = tablasPartidos;
            ViewBag.TablasPartidosSegundaFase = tablasPartidosSegundaFase;
            ViewBag.TablaPronosticosEspeciales = tablaPronosticosEspeciales;

            return PartialView("_ObtenerPronostico");
        }

    }
}
